package uhaleks;

/**
 * Created by Александр on 13.07.2014.
 */
public class Palindrome {
    private String s;

    public Palindrome(String s) {
        this.s = s;
    }

    public int maxLength() {
        int length = s.length();
        if (length <= 1)
            return length;
        int result = 0;
        String resPalindrome = "";
        int indexOf;
        String p = "";
        int shear;
        int odd;
        if (length % 2 == 0)
            odd = 0; // четная длина строки
        else
            odd = 1;
        for (int i = 1; i < length - odd; i++) {
            if (odd == 1) {
                p = "" + s.charAt(i);
                shear = i + 1;
            } else {
                p = "";
                shear = i;
            }
            for (int j = i - 1; j >= 0; j--) {
                indexOf = s.indexOf(s.charAt(j), shear);
                if (indexOf != -1) {
                    p = s.charAt(j) + p + s.charAt(j);
                    if (indexOf == length - 1)
                        break;
                    shear = indexOf + 1;
                }
            }
            //System.out.print(p + " "); // все палиндромы (с повторениями)
            if (result < p.length()) {
                result = p.length();
                resPalindrome = p;
            }
        }
        System.out.println("Палиндром максимальной длины: " + resPalindrome);
        return result;
    }


    /*public int maxLength() {
        int result = 0;
        int l = s.length();
        int indexOf;
        String p;
        //String result = "";
        int shear;
        for (int i = 1; i < l - 1; i++) {
            p = "" + s.charAt(i);
            shear = i + 1;
            for (int j = i - 1; j >= 0; j--) {
                indexOf = s.indexOf(s.charAt(j), shear);
                if (indexOf != -1) {
                    p = s.charAt(j) + p + s.charAt(j);
                    if (indexOf == l - 1)
                        break;
                    shear = indexOf + 1;
                }
            }
            //result += " " + p;
            if (result < p.length())
                result = p.length();
        }
        return result;
    }*/
}
